/*
 * Copyright 2011-2020 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0.
 * See `LICENSE` in the project root for license information.
 */

package me.ijleex.mgmt.codegen.service;

import java.util.List;

import me.ijleex.mgmt.codegen.entity.ColumnInfo;
import me.ijleex.mgmt.codegen.entity.TableInfo;

/**
 * 代码生成 服务层
 *
 * @author liym
 * @since 2019-02-26 11:09 新建
 */
public interface ICodeGenService {

    /**
     * 查询数据库表信息
     *
     * @param tableInfo 表信息
     * @return 数据库表列表
     */
    List<TableInfo> getTableList(TableInfo tableInfo);

    /**
     * 根据表名查询列信息
     *
     * @param tableName 表名
     * @return 列信息
     * @since 2019-04-10 17:01
     */
    List<ColumnInfo> getTableColumns(String tableName);

    /**
     * 生成代码
     *
     * @param tableName 表名称
     * @param tablePrefix 要删除的表名前缀，如 t_、t_mgmt 等
     * @param moduleName 模块包名，与基础包名（如 me.ijleex.mgmt）一起组成生成代码的完整包名，如 `codegen`
     * @return 数据
     * @since 2019-03-04 11:07 添加参数：String moduleName
     * @since 2019-03-14 19:52 添加参数：String tablePrefix
     */
    byte[] generateCode(String tableName, String tablePrefix, String moduleName);

    /**
     * 批量生成代码
     *
     * @param tableName 表名，用逗号分隔
     * @param tablePrefix 要删除的表名前缀，如 t_、t_mgmt 等
     * @param moduleName 模块包名
     * @return 数据
     * @since 2019-03-04 11:07 添加参数：String moduleName
     * @since 2019-03-14 19:52 添加参数：String tablePrefix
     */
    byte[] generateCodeBatch(String tableName, String tablePrefix, String moduleName);

}
